#ifndef __AUTOCAR_GLOBAL_H
#define __AUTOCAR_GLOBAL_H

#ifdef __cplusplus
extern "C" {
#endif

/********************宏定义********************/

#define IS_ODD(num) ((num) & 1) /*定义宏函数 IS_ODD 用于判断一个数是否为奇数*/

#define CENTER_SPEED		35.0f
#define OFFSET_1_SPEED_INC	20.0f
#define OFFSET_2_SPEED_INC	25.0f
#define OFFSET_3_SPEED_INC	30.0f
#define OFFSET_4_SPEED_INC	35.0f
#define OFFSET_5_SPEED_INC	40.0f

/********************类型定义********************/

/********************全局事件表********************/
enum sys_event
{
	MISSION_1_ENTER = 128,		/*进入任务1*/
	MISSION_2_ENTER = 127, 		/*进入任务2*/
	MISSION_3_ENTER = 126,		/*进入任务3*/
	MISSION_4_ENTER = 125,		/*进入任务4*/
	
	MISSION_1_EXIT = 124,		/*退出任务1*/
	MISSION_2_EXIT = 123,		/*退出任务2*/
	MISSION_3_EXIT = 122,		/*退出任务3*/
	MISSION_4_EXIT = 121,		/*退出任务4*/
	
	GRAY_SCALE_CENTER = 120,	/*黑线居中*/
	GRAY_SCALE_RIGHT_1 = 119, 	/*黑线右偏1格*/
	GRAY_SCALE_RIGHT_2 = 118, 	/*黑线右偏2格*/ 
	GRAY_SCALE_RIGHT_3 = 117, 	/*黑线右偏3格*/
	GRAY_SCALE_RIGHT_4 = 116, 	/*黑线右偏4格*/
	GRAY_SCALE_RIGHT_5 = 115, 	/*黑线右偏5格*/
	GRAY_SCALE_LEFT_1 = 114,	/*黑线左偏1格*/
	GRAY_SCALE_LEFT_2 = 113,	/*黑线左偏2格*/
	GRAY_SCALE_LEFT_3 = 112,	/*黑线左偏3格*/
	GRAY_SCALE_LEFT_4 = 111,	/*黑线左偏4格*/
	GRAY_SCALE_LEFT_5 = 110,	/*黑线左偏5格*/
	GRAY_SCALE_WHITE = 109,		/*全白无黑线*/
	GRAY_SCALE_BLACK = 108,		/*检测到黑线*/

	STARTING_DELAY_TIMEOUT = 107, /*起始延时超时*/
	STEERING_IN_PLACE_CHECK = 106,	/*转向到位检查*/
	
};

/*状态机类型定义*/
typedef struct
{
	int state;
	
}state_machine_t;

/*带参事件类型定义*/
typedef struct
{	
	int event;
	void* data;
	
}param_event_t;

#ifdef __cplusplus
}
#endif

#endif
